package com.yilife.hmstr.controller;

import com.yilife.hmstr.domain.Hmstr;
import com.yilife.hmstr.service.impl.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;


@RestController
@RequestMapping("/hm")
@Api(description = "健康管理系统检测报告数据增删改查接口")
public class HmstrController {

	@Autowired
	private FiveElementsReportServiceImpl ferImpl;
	
	@Autowired
	private HmstrRecordServiceImpl hrImpl;
	
	@Autowired
	private MeridianAnalysisServiceImpl maImpl;
	
	@Autowired
	private MeridianTableServiceImpl mtImpl;
	
	@Autowired
	private TestReportServiceImpl teImpl;

	@Autowired
	private HmstrRecordServiceImpl hmstrRecordService;

	//通过Spring的autowired注解获取spring默认配置的request
	@Autowired
	private HttpServletRequest request;

//	@RequestMapping("/add")
//	public void add(){
//		//检测记录
//		HmstrRecord hr=new HmstrRecord(136028, 39, "170cm", "68kg", "标准体重", "2016-08-18 09:42", 11);
//		hrImpl.insert(hr);
//		String relationship="肝胆互为表里，又属筋骨和四肢。肝五行属木，开窍于目，其华在爪，过旺或过衰，较易患肝、胆、头、颈、四肢、关节、筋脉、眼和神经等方面的疾病。";
//		String maintenanceReason="工作过于辛苦时第一要维护的就是肝脏。因为肝是身体里集中藏血的器官，过渡工作肝就得过渡储血。五行本来是按肝一心一脾一肺一肾这个方向相生的，肝过劳便虚弱、心、脾、肺、肾都进入波及范围，而且过劳积累的怒气也会伤肝。";
//		String wayOfCuring="多喝水可补充体液，增强血液循环，促进新陈代谢，加速身体消化吸收和排除废物，减少代谢产物和毒素对肝脏的损害。保证食物中的蛋白质，碳水化合物、脂肪、维生素和矿物质等保持相应的比例；同时保持五味不偏；尽量少吃辛辣食品，多吃新鲜蔬菜、水果；不暴饮暴食或饥饱不匀。";
//		//五行报告
////		FiveElementsReport fer=new FiveElementsReport("东", "怒", "青", "酸", "木", "肝/胆", 48, 0, "尚  可", relationship, maintenanceReason, wayOfCuring, (long) 136028);
////		ferImpl.insert(fer);
//		//经络报告
//		String symptom1="1.肾功能下降,有气血不足（头晕）症状倾向。易出现贫血症2.预防肾虚引起椎间盘突出症、腰肌劳损倾向。";
//		String suggest1="多吃含小麦胚芽油Ｅ丰富的食品(如豆类,牛肉,小虾米,小鱼干,板栗),多吃龟类,蔬菜(胡萝卜)与(甜味)水果,勿食刺激性食物(酒,辣）,适当的运动,充足的休息。";
//		String symptom2="慢性胃功能下降的倾向，易出现，易出现食欲不定，食少胃胀、或不思饮食。";
//		String suggest2="高蛋白易消化的饮食,如豆浆、牛奶、燕麦、花生浆、稀饭、多参加集体的活动或运动和晨起深呼吸,放松繁重的工作和焦急心情。";
//		String symptom3="胆汁分泌减少,有偏头痛和营养吸收失调倾向。容易患胃炎，胃溃疡倾向。";
//		String suggest3="按时进食,多吃高蛋白与粗纤维食物,如豆类,牛肉,板栗,薯类,蔬菜,少吃肥厚油腻食物,多做关节肌腱拉伸运动。";
//		String symptom4="易出现血压不稳定倾向";
//		String suggest4="多吃青绿色粗纤维食物(如糙米、草莓、猕猴桃、柑橘类水果，豆类,蔬菜),少吃肥厚油腻食物,多在树林与草地上走动及深呼吸运动,多做关节肌腱拉伸运动。";
//		String symptom5="小便黄、尿道灼热疼痛倾向";
//		String suggest5="放松心情和工作的压力,多吃苦味蔬菜,酸味水果，少吃鱼肉类,多吃豆类。";
//		String symptom6=" 预防骨质疏松症倾向,有全身骨骼酸痛现象，易得膀胱结石、肾结石";
//		String suggest6="多吃小虾米,豆类,蔬菜水果,鱼龟类;适当跑步运动促进血液营养的运送。";
//		String symptom7="预防肾虚引起椎间盘突出症、腰肌劳损倾向";
//		String suggest7="多吃含小麦胚芽油Ｅ丰富的食品(如豆类,牛肉,小虾米,小鱼干,板栗),多吃龟类,蔬菜(胡萝卜)与(甜味)水果,勿食刺激性食物(酒,辣）,适当的运动,充足的休息";
//		MeridianAnalysis ma1=new MeridianAnalysis(new Random().nextInt(), 136028, "肾经在虚症", symptom1, suggest1);
//		MeridianAnalysis ma2=new MeridianAnalysis(new Random().nextInt(), 136028, "胃经在虚症", symptom2, suggest2);
//		MeridianAnalysis ma3=new MeridianAnalysis(new Random().nextInt(), 136028, "胆经在虚症", symptom3, suggest3);
//		MeridianAnalysis ma4=new MeridianAnalysis(new Random().nextInt(), 136028, "大肠经小肠经在实症", symptom4, suggest4);
//		MeridianAnalysis ma5=new MeridianAnalysis(new Random().nextInt(), 136028, "小肠经在实症（并膀胱经异常）", symptom5, suggest5);
//		MeridianAnalysis ma6=new MeridianAnalysis(new Random().nextInt(), 136028, "膀胱经在虚症（并肾经虚症）", symptom6, suggest6);
//		MeridianAnalysis ma7=new MeridianAnalysis(new Random().nextInt(), 136028, "肾经在虚症（并膀胱经虚症）", symptom7, suggest7);
//		maImpl.add(ma1);
//		maImpl.add(ma2);
//		maImpl.add(ma3);
//		maImpl.add(ma4);
//		maImpl.add(ma5);
//		maImpl.add(ma6);
//		maImpl.add(ma7);
//		//检测报告
//		int trid=new Random().nextInt();
//		TestReport tr=new TestReport(trid, 136028);
//		String project1="呼吸道炎症";
//		String project2="胃部不适（胃酸分泌不足）";
//		String project3="小肠的消化、吸收功能不太好";
//		String project4="脊椎骨骼有器质性变化(背痛)";
//		String project5="紧张性头痛或偏头痛";
//		String project6="自律神经失调";
//		String project7="血压不正常";
//		String project8="精神活动增加（有心理压力）";
//		String project9="脊椎骨质增生或骨质疏松倾向";
//		String trpsuggest1="多食维生素A、C、E含量高的食物。 戒烟、酒，食疗冰糖雪梨、罗汉果、胖大海";
//		String trpsuggest2="多食无刺激且易消化的食物、蔬菜,按时进食，细嚼慢咽、少食多餐，进餐时放松,保持精神愉快,注意休息,多喝柠檬水";
//		String trpsuggest3="宜饮食规律，细嚼慢咽，切忌暴饮暴食及食无定时，多食蔬菜、水果及多食高纤维食品，注意休息，增加运动，多食高纤维食品";
//		String trpsuggest4="保持良好坐、站姿，注意工作间休息，避免长时间的站立而不活动,平时多做保健按摩及物理疗法";
//		String trpsuggest5="安定情绪，常放松散步，饮食以清淡为主，补充高蛋白、高钙营养，平时多吃新鲜的水果蔬菜";
//		String trpsuggest6="要保持乐观、愉快的心情，充足睡眠，消除顾虑，生活规律，加强锻炼，建议做脊椎保健按摩";
//		String trpsuggest7="清淡饮食，低脂少油，多食黑木耳、菌类、蔬菜、水果，少食胆固醇高食物、含盐量高的食物、高脂肪食物";
//		String trpsuggest8="生活规律，劳逸结合，注意休息，最好选择一种方式释放出去，比如去大山或无人区高喊等";
//		String trpsuggest9="合理膳食，增加户外运动，适当补钙，平时应多注意适当的运动，如：散步、慢跑等";
//		String attribute1="◎最可能的问题◎";
//		String attribute2="◎最可能的问题◎";
//		String attribute3="◎最可能的问题◎";
//		String attribute4="◎最可能的问题◎";
//		String attribute5="◎最可能的问题◎";
//		String attribute6="◎最可能的问题◎";
//		String attribute7="◎倾向性或潜在性问题◎";
//		String attribute8="◎倾向性或潜在性问题◎";
//		String attribute9="◎倾向性或潜在性问题◎";
//		TrProblem trp1=new TrProblem(new Random().nextInt(), project1, trpsuggest1, attribute1, trid);
//		TrProblem trp2=new TrProblem(new Random().nextInt(), project2, trpsuggest2, attribute2, trid);
//		TrProblem trp3=new TrProblem(new Random().nextInt(), project3, trpsuggest3, attribute3, trid);
//		TrProblem trp4=new TrProblem(new Random().nextInt(), project4, trpsuggest4, attribute4, trid);
//		TrProblem trp5=new TrProblem(new Random().nextInt(), project5, trpsuggest5, attribute5, trid);
//		TrProblem trp6=new TrProblem(new Random().nextInt(), project6, trpsuggest6, attribute6, trid);
//		TrProblem trp7=new TrProblem(new Random().nextInt(), project7, trpsuggest7, attribute7, trid);
//		TrProblem trp8=new TrProblem(new Random().nextInt(), project8, trpsuggest8, attribute8, trid);
//		TrProblem trp9=new TrProblem(new Random().nextInt(), project9, trpsuggest9, attribute9, trid);
//		List<TrProblem> trs=new ArrayList<TrProblem>();
//		trs.add(trp1);
//		trs.add(trp2);
//		trs.add(trp3);
//		trs.add(trp4);
//		trs.add(trp5);
//		trs.add(trp6);
//		trs.add(trp7);
//		trs.add(trp8);
//		trs.add(trp9);
//		MeridianChangeAnalysis mca1=new MeridianChangeAnalysis(new Random().nextInt(), trid, 1, "11(胆)、12(肝) 在低或高能量", "分两边，表头痛，须注意肝功能异常");
//		MeridianChangeAnalysis mca2=new MeridianChangeAnalysis(new Random().nextInt(), trid, 2, "11(胆) 在低能量", "胆管发炎");
//		MeridianChangeAnalysis mca3=new MeridianChangeAnalysis(new Random().nextInt(), trid, 3, "10(三焦) 在高能量", "身体有炎症");
//		MeridianChangeAnalysis mca4=new MeridianChangeAnalysis(new Random().nextInt(), trid, 4, "7(膀胱) 在低能量", "80%表示脊椎骨骼有器质性变化(背痛)，20%有泌尿系统病变");
//		MeridianChangeAnalysis mca5=new MeridianChangeAnalysis(new Random().nextInt(), trid, 5, "2(大肠)、6(小肠)、10(三焦) 在高能量", "血压不正常");
//		MeridianChangeAnalysis mca6=new MeridianChangeAnalysis(new Random().nextInt(), trid, 6, "1(肺)、2(大肠) 在高能量", "感冒,呼吸道发炎或皮肤炎");
//		List<MeridianChangeAnalysis> mcas=new ArrayList<MeridianChangeAnalysis>();
//		mcas.add(mca1);
//		mcas.add(mca2);
//		mcas.add(mca3);
//		mcas.add(mca4);
//		mcas.add(mca5);
//		mcas.add(mca6);
//		teImpl.add(tr, mcas, trs);
//		//经络表
//		int mtId=new Random().nextInt();
//		MeridianTable mt=new MeridianTable(mtId, 136028);
//		String description1="◆身体能量呈亢进状态 精神活动旺盛、易消耗元气，身体部位有发炎现象、可能服用提振精神的用品。";
//		String description2="◆阴阳平衡"
//  +"身体代谢正常，对体内毒素有良好的排除及组织新生的能力。";
//		String description3="◆上盛下虚：表示机体处于精神压力状态"
//  +"可能会出现以下症状：头重脚轻，上火、焦燥不安、口臭、腰脚无力、睡眠不好。";
//		String description4="◆正常范围"
//  +"表示身体内部的肌肉骨骼系统有良好的运作能力";
//		String description5="◆自律神经功能失调"
//+ " 精神压力大，表现为情绪波动、睡眠欠佳";
//		FiveJudgmentSystem fj1=new FiveJudgmentSystem(new Random().nextInt(), "体能", "64.4", "25~55", description1, mtId);
//		FiveJudgmentSystem fj2=new FiveJudgmentSystem(new Random().nextInt(), "阴/阳", "1.10", "0.8～1.2", description2, mtId);
//		FiveJudgmentSystem fj3=new FiveJudgmentSystem(new Random().nextInt(), "上/下", "1.42", "0.8～1.2", description3, mtId);
//		FiveJudgmentSystem fj4=new FiveJudgmentSystem(new Random().nextInt(), "左/右", "0.81", "0.8～1.2", description4, mtId);
//		FiveJudgmentSystem fj5=new FiveJudgmentSystem(new Random().nextInt(), "最大/最小", "2.48", "≤2.0", description5, mtId);
//		List<FiveJudgmentSystem> fjs=new ArrayList<FiveJudgmentSystem>();
//		fjs.add(fj1);
//		fjs.add(fj2);
//		fjs.add(fj3);
//		fjs.add(fj4);
//		fjs.add(fj5);
//		MeridianData md1=new MeridianData(new Random().nextInt(), "肺经", (float) 25.3, "低能量区（虚症）", "左侧", mtId);
//		MeridianData md2=new MeridianData(new Random().nextInt(), "肺经", (float) 25.3, "低能量区（虚症）", "左侧", mtId);
//		MeridianData md3=new MeridianData(new Random().nextInt(), "肺经", (float) 25.3, "低能量区（虚症）", "左侧", mtId);
//		MeridianData md4=new MeridianData(new Random().nextInt(), "肺经", (float) 25.3, "低能量区（虚症）", "左侧", mtId);
//		MeridianData md5=new MeridianData(new Random().nextInt(), "肺经", (float) 25.3, "低能量区（虚症）", "左侧", mtId);
//		MeridianData md6=new MeridianData(new Random().nextInt(), "肺经", (float) 25.3, "低能量区（虚症）", "左侧", mtId);
//		MeridianData md7=new MeridianData(new Random().nextInt(), "肺经", (float) 25.3, "低能量区（虚症）", "左侧", mtId);
//		MeridianData md8=new MeridianData(new Random().nextInt(), "肺经", (float) 25.3, "低能量区（虚症）", "左侧", mtId);
//		MeridianData md9=new MeridianData(new Random().nextInt(), "肺经", (float) 25.3, "低能量区（虚症）", "左侧", mtId);
//		MeridianData md10=new MeridianData(new Random().nextInt(), "肺经", (float) 25.3, "低能量区（虚症）", "左侧", mtId);
//		MeridianData md11=new MeridianData(new Random().nextInt(), "肺经", (float) 25.3, "低能量区（虚症）", "左侧", mtId);
//		MeridianData md12=new MeridianData(new Random().nextInt(), "肺经", (float) 25.3, "低能量区（虚症）", "左侧", mtId);
//		MeridianData md13=new MeridianData(new Random().nextInt(), "肺经", (float) 25.3, "低能量区（虚症）", "左侧", mtId);
//		MeridianData md14=new MeridianData(new Random().nextInt(), "肺经", (float) 25.3, "低能量区（虚症）", "左侧", mtId);
//		MeridianData md15=new MeridianData(new Random().nextInt(), "肺经", (float) 25.3, "低能量区（虚症）", "左侧", mtId);
//		MeridianData md16=new MeridianData(new Random().nextInt(), "肺经", (float) 25.3, "低能量区（虚症）", "左侧", mtId);
//		MeridianData md17=new MeridianData(new Random().nextInt(), "肺经", (float) 25.3, "低能量区（虚症）", "左侧", mtId);
//		MeridianData md18=new MeridianData(new Random().nextInt(), "肺经", (float) 25.3, "低能量区（虚症）", "左侧", mtId);
//		MeridianData md19=new MeridianData(new Random().nextInt(), "肺经", (float) 25.3, "低能量区（虚症）", "左侧", mtId);
//		MeridianData md20=new MeridianData(new Random().nextInt(), "肺经", (float) 25.3, "低能量区（虚症）", "左侧", mtId);
//		MeridianData md21=new MeridianData(new Random().nextInt(), "肺经", (float) 25.3, "低能量区（虚症）", "左侧", mtId);
//		MeridianData md22=new MeridianData(new Random().nextInt(), "肺经", (float) 25.3, "低能量区（虚症）", "左侧", mtId);
//		MeridianData md23=new MeridianData(new Random().nextInt(), "肺经", (float) 25.3, "低能量区（虚症）", "左侧", mtId);
//		MeridianData md24=new MeridianData(new Random().nextInt(), "肺经", (float) 25.3, "低能量区（虚症）", "左侧", mtId);
//		List<MeridianData> mds=new ArrayList<MeridianData>();
//		mds.add(md1);
//		mds.add(md2);
//		mds.add(md3);
//		mds.add(md4);
//		mds.add(md5);
//		mds.add(md6);
//		mds.add(md7);
//		mds.add(md8);
//		mds.add(md9);
//		mds.add(md10);
//		mds.add(md11);
//		mds.add(md12);
//		mds.add(md13);
//		mds.add(md14);
//		mds.add(md15);
//		mds.add(md16);
//		mds.add(md17);
//		mds.add(md18);
//		mds.add(md19);
//		mds.add(md20);
//		mds.add(md21);
//		mds.add(md22);
//		mds.add(md23);
//		mds.add(md24);
//		mtImpl.add(mt, fjs, mds);
//	}
//
//	@RequestMapping("/del")
//	public void del(){
//		int hmstrid=136028;
//		ferImpl.delByPid(hmstrid);
//
//		maImpl.delByPid(hmstrid);
//
//		mtImpl.delByPid(hmstrid);
//
//		teImpl.delByPid(hmstrid);
//
//		hrImpl.deleteById(hmstrid);
//	}
//
//	@RequestMapping("/up")
//	public void update(){
//
//	}
	
//	@RequestMapping(value="/sel",method=RequestMethod.GET)
//	public String select(){
//		return hrImpl.selectByID(136028);
		//return new HmstrRecord().selectById(136028);
//	}

	@RequestMapping(value="/select",method = RequestMethod.GET)
	@ApiOperation(value = "根据id查询")
	public Hmstr select(@ApiParam(value = "id")@RequestParam long hmstrId){
		return hmstrRecordService.selectByID(hmstrId);
	}

	@RequestMapping(value="/del",method = RequestMethod.DELETE)
	@ApiOperation(value = "根据id删除")
	public int del(@ApiParam(value = "id")@RequestBody long hmstrId){
		return hmstrRecordService.delById(hmstrId);
	}

	/***
	 * 上传文件 并解析
	 *
	 * @param file
	 * @return
	 */
	@RequestMapping(value="/add", method = RequestMethod.POST)
	@ApiOperation(value = "根据上传的html文件添加数据")
	public Hmstr add( MultipartFile file) {
		File file1=null;
		BufferedOutputStream stream = null;
		// 判断文件是否为空
		if (!file.isEmpty()) {
			try {
				file1=new File("upload/"+file.getOriginalFilename());
				byte[] bytes = file.getBytes();
				stream = new BufferedOutputStream(new FileOutputStream(file1 ));
				stream.write(bytes);
				stream.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return hmstrRecordService.HtmlToObject(file1.getAbsolutePath());
	}
}
